home *** CD-ROM | disk | FTP | other *** search
/ Merciful 2 / Merciful - Disc 2.iso / software / z / zeus2.dms / zeus2.adf / Developers / Include / Plfile.h < prev    next >
C/C++ Source or Header  |  1995-07-04  |  14KB  |  643 lines

  1.      
  2. /* PLFILE.H *************************************************************/
  3.  
  4. #ifndef PLFILE_H
  5. #define PLFILE_H
  6.  
  7. #include <exec/types.h>
  8. #include <exec/nodes.h>
  9. #include <exec/lists.h>
  10. #include <exec/semaphores.h>
  11.  
  12. #include <dos/dos.h>
  13. #include <dos/datetime.h>
  14.  
  15. #include <pllengths.h>
  16.  
  17. #include <libraries/pipeutil.h>
  18.  
  19. #define FILEAREASFILE        "Pipeline:Config/PlFile/FileAreas.Dat"
  20. #define XPRPROTOSFILE        "Pipeline:Config/PlFile/XprProtos.Dat"
  21. #define BAUDFILE        "Pipeline:Config/PlFile/BaudRates.Dat"
  22.  
  23. /* struct fakefile *******************************************************/
  24.  
  25. struct            fakefile
  26. {
  27.     time_t            UploadDate;
  28.     time_t            LastDownloaded;
  29.     UWORD            NumberOfDownloads;
  30. } ;
  31.  
  32. /* struct savefile *******************************************************/
  33.  
  34. struct             savefile
  35. {
  36.     ULONG            area;
  37.     char            filename [32];
  38.     UBYTE                *desc;        // MUST be Null Terminated
  39.     ULONG            flags;         // See 'struct File' for info
  40.     BOOL            yesnoFakeInfo;  // Set to TRUE and allocate struct fakefile if required
  41.     struct fakefile        *fakeinfo;    // Set to NULL if not required
  42.      char            UserName[40];
  43. } ;
  44.     
  45. /* LoadFile -> flags *****************************************************/
  46.  
  47. #define LF_DESCRIPTION        0x0001
  48. #define LF_LOADDELETED        0x0002
  49.  
  50. /**********************************************************************/
  51. /*                 FullFile Structure (as returned by                 */
  52. /*              library functions ScanFiles and LoadFile              */
  53. /**********************************************************************/
  54.  
  55. struct            fullFile
  56. {
  57.     struct        file   *ff_file;
  58.     UBYTE               *ff_text;
  59.     int            ff_result;
  60. } ;
  61.  
  62.  
  63. /**********************************************************************/
  64. /*                           File Structure                           */
  65. /**********************************************************************/
  66.  
  67. #ifdef OLDSTUFF
  68. struct            oldfile
  69. {
  70.     ULONG            Number;
  71.     UBYTE            FileName[20];
  72.     ULONG            DescPosition;
  73.     ULONG            DescLength;
  74.     ULONG            FileSize;
  75.     ULONG            Section;
  76.     time_t            UploadDate;
  77.     time_t            LastDownloaded;
  78.     UWORD            NumberOfDownloads;
  79.     ULONG            Flags;
  80.     char            UploadedBy[40];
  81.     LONG            AlphaPosNext; /* -1 for no next */
  82.     LONG            AlphaPosPrev; /* -1 for no prev */
  83. } ;
  84. #endif
  85.  
  86. struct    file
  87. {
  88.     ULONG            Number;
  89.     UBYTE            FileName[32];
  90.     ULONG            DescPosition;
  91.     ULONG            DescLength;
  92.     ULONG            FileSize;
  93.     ULONG            Section;
  94.     time_t            UploadDate;
  95.     time_t            LastDownloaded;
  96.     UWORD            NumberOfDownloads;
  97.     ULONG            Flags;
  98.     char            UploadedBy[40];
  99.     LONG            AlphaPosNext; /* -1 for no next */
  100.     LONG            AlphaPosPrev; /* -1 for no prev */
  101. } ;
  102.  
  103. /**********************************************************************/
  104. /*                      Flags in File Structure                       */
  105. /**********************************************************************/
  106.  
  107. #define        FI_UNVALIDATED            (ULONG) 0x0001
  108. #define        FI_FREEFILE            (ULONG) 0x0002
  109. #define        FI_DELETED            (ULONG) 0x0004
  110. #define        FI_OFFLINE            (ULONG) 0x0008
  111.  
  112. /* main File Index *******************************************************/
  113.  
  114. struct            oldfileindex
  115. {
  116.     UBYTE            FileName[20];
  117.     ULONG            FileNumber;
  118.     ULONG            HdrPosition;
  119.     UWORD            FileArea;
  120.     UWORD            Deleted;
  121. } ;
  122.  
  123. /**********************************************************************/
  124. /*                             File Index                             */
  125. /**********************************************************************/
  126.  
  127. struct            fileindex
  128. {
  129.     UBYTE            FileName[32];
  130.     ULONG            FileNameCRC;
  131.     ULONG            HdrPosition;
  132.     UWORD            FileArea;
  133.     BOOL            Deleted;
  134. } ;
  135.  
  136. /**********************************************************************/
  137. /*                        External File Index                         */
  138. /**********************************************************************/
  139.  
  140. struct            extfileindex
  141. {
  142.     ULONG            FileNumber;
  143.     ULONG            Position;
  144. } ;
  145.  
  146.  
  147. /**********************************************************************/
  148. /*                          File Area Flags                           */
  149. /**********************************************************************/
  150.  
  151. #define        FA_DOWNLOADS            (ULONG) 0x0001
  152. #define        FA_UPLOADS            (ULONG) 0x0002
  153. #define        FA_VIEWING            (ULONG) 0x0004
  154. #define        FA_FREEFILES            (ULONG) 0x0008
  155. #define        FA_JOINUSERS            (ULONG) 0x0010
  156. #define        FA_DOSNAMES            (ULONG) 0x0020
  157. #define        FA_VALIDATION            (ULONG) 0x0040
  158. #define        FA_COPYTOTEMP            (ULONG) 0x0080
  159.  
  160. /**********************************************************************/
  161. /*                        File Area Structure                         */
  162. /**********************************************************************/
  163.  
  164. struct            filearea
  165. {
  166.     ULONG        number;
  167.     char        name        [AREANAME_LENGTH];
  168.     char        path        [PATH_LENGTH];
  169.     unsigned short    low_access;
  170.     unsigned short  high_access;
  171.     int        mindlbaud;
  172.     int        minulbaud;
  173.     unsigned short  minage;
  174.     ULONG        flags;
  175. } ;
  176.  
  177. /**********************************************************************/
  178. /*                       General Configuration                        */
  179. /**********************************************************************/
  180.  
  181. #define    GENERALCFG "Pipeline:Config/PlFile/General.Cfg"
  182.  
  183. struct    GeneralFileCfg
  184. {
  185.     ULONG        BufferSize;
  186.     BOOL        FileNotes;
  187.     UWORD        MaxFileMarks;
  188. } ;
  189.  
  190. /**********************************************************************/
  191. /*                      Configuration Structure                       */
  192. /**********************************************************************/
  193.  
  194. struct        Config
  195. {
  196.     struct        SignalSemaphore  cfg_Semaphore;
  197.     struct        List        *cfg_AreaList;
  198.     struct        XprStruct    *cfg_Xpr;
  199.     struct        GeneralFileCfg     cfg_General;
  200. } ;
  201.  
  202. struct XprStruct
  203. {
  204.     struct        SignalSemaphore  cfg_Semaphore;
  205.     struct        List        *cfg_XprList;
  206. } ;
  207.  
  208. #ifdef OLD_FILE_STUFF
  209.  
  210. /* struct Internal *******************************************************/
  211.  
  212. struct        Internal
  213. {
  214.     struct    IntFiles    *int_files;
  215.     struct  IntAreaFiles    *int_areafiles;
  216. } ;
  217.  
  218. struct        IntFiles        /* Struct FileNode */
  219. {
  220.     struct     SignalSemaphore     if_FileSemaphore;
  221.     struct    MinList        *if_Files;
  222. } ;
  223.  
  224. struct        IntAreaFiles        /* Struct FileAreaNode */
  225. {
  226.     struct     SignalSemaphore     iaf_FileSemaphore;
  227.     struct    MinList        *iaf_Files;
  228. } ;
  229.  
  230.  
  231. /* struct FileNode *******************************************************/
  232.  
  233. struct        FileNode
  234. {
  235.     struct    MinNode        fn_node;
  236.     struct    fileindex      *fn_index;
  237. } ;
  238.  
  239. /* struct FileAreaNode ***************************************************/
  240.  
  241. struct        FileAreaNode
  242. {
  243.     struct    MinNode        fan_node;
  244.     ULONG            fan_Section;
  245.     struct  MinList            fan_Alpha; /* struct IndexNode */
  246.     struct    MinList        fan_Date;  /* struct IndexNode */
  247. } ;
  248.  
  249. struct        IndexNode
  250. {
  251.     struct    MinNode        in_node;
  252.     struct    extfileindex    in_ndx;
  253. } ;
  254.  
  255. #endif
  256.  
  257. struct    NewMapEntry
  258. {
  259.     ULONG            nme_Area;
  260.     time_t            nme_LastSave;
  261. } ;
  262.  
  263. struct    Mark
  264. {
  265.     ULONG             mn_Number;
  266.     ULONG             mn_Section;
  267.     char             mn_FileName[32];
  268.     char             mn_DosFileName[108];
  269.     ULONG             mn_XferTime;
  270.     BOOL             mn_DosFile;
  271.     ULONG             mn_Size;
  272. } ;
  273.  
  274. /* sk_Flag */
  275.  
  276. #define SEARCH_NONE        0
  277. #define SEARCH_DATE        1
  278. #define SEARCH_FILENAME        2
  279. #define SEARCH_DESCRIPTION    3
  280. #define SEARCH_TEXT        4
  281.  
  282. /* sk_SearchFlag */
  283.  
  284. #define SEARCH_SINCE        0
  285. #define SEARCH_BEFORE        1
  286.  
  287. struct        SearchKey
  288. {
  289.     BOOL            sk_Active;
  290.     ULONG            sk_Flag;
  291.     ULONG            sk_SearchFlag;
  292.     char            sk_Data[256];
  293.     ULONG            sk_Length;
  294.     time_t            sk_DateSearch;
  295. } ;
  296.  
  297. /* struct FileStats ******************************************************/
  298.  
  299. struct        FileStats
  300. {
  301.     ULONG             NumOfFiles;
  302.     ULONG             High;
  303. } ;
  304.  
  305. struct    FileRatioData
  306. {
  307.     LONG        FilesDL;
  308.     LONG        BytesDL;
  309.     LONG        FilesUL;
  310.     LONG        BytesUL;
  311.     LONG        FileRatio;
  312.     LONG        ByteRatio;
  313.     LONG        FreeFiles;
  314.     LONG        FreeBytes;
  315.     LONG        MaxFiles;
  316.     LONG        MaxBytes;
  317.     LONG        BytesToday;
  318.     LONG        FilesToday;
  319. } ;
  320.  
  321. /* struct parsekey */
  322.  
  323. struct    parsekey
  324. {
  325.     long              firstnum;
  326.     long              endno;
  327.     int              n;
  328.     char             *line;
  329. } ;
  330.  
  331. struct    MarkControl
  332. {
  333.     int             MarkPos;
  334.     UBYTE            *MarkArray[64];
  335.     struct    parsekey     MarkKey;
  336.     int             MarkResult;
  337.     UBYTE            *PatternMatch;
  338.     ULONG             MatchLen;
  339.     BPTR             IdxSearch;
  340.     int             MarkOffset;
  341.     struct    Mark         ListMarked;
  342.     ULONG             MarkNumber;
  343.     BOOL             LoopNo;
  344. } ;
  345.  
  346. struct    StoreData
  347. {
  348.     ULONG         descPos, dataPos;
  349.     ULONG         RecordsLoaded;
  350.     ULONG         RecordsReturned;
  351.     char        *Records;
  352. } ;
  353.  
  354. #define MODE_AREA      0
  355. #define    MODE_SIG      1
  356. #define MODE_ALL      2
  357.  
  358. struct    SimpleList
  359. {
  360.     struct    ScanInfo       si;
  361.     APTR               key;
  362.     UWORD               mode;
  363.     ULONG               area;
  364.     UBYTE               txt[128];
  365.     time_t               date;
  366.     UBYTE               unval;
  367.     BOOL             first;
  368.     UBYTE            *descpos;
  369.     ULONG             curfile;
  370.     ULONG             writeflags;
  371.     struct    AreaNode     *node;
  372.     int             stdindent;
  373.     int             length;
  374.     int             plus;    
  375.     UBYTE            *fileformat;
  376.     UBYTE            *scanareas;
  377.     UBYTE            *dateformat;
  378.     UBYTE            *firstfile;
  379.     struct    fullFile     ff;
  380. } ;
  381.  
  382. /* struct UserFileData ***************************************************/
  383.  
  384. struct        UserFileData
  385. {
  386.     ULONG             currentarea;
  387.     ULONG             xprproto;
  388.     struct    fullFile    *CurrListFile;
  389.     ULONG             DescLength;
  390.     char            *FileHdr;
  391.     struct    ScanningAreas    *Scan;        /* non-Zero if ScanAreas is in use */
  392.     char             Buffer1 [256]; /* These buffers are not to */
  393.     char             Buffer2 [80];  /* be used in ExpandCC!     */
  394.     BPTR             UploadLock;
  395.     struct    EditorLine    *EdLine;
  396.     char            *FileDesc;     /* NextFile */
  397.     struct    XferInfo    *TransferInfo;
  398.     ULONG             CurrentSig;
  399.     struct    XferInfoNode    *XferNode, *SaveFileNode;
  400.     struct    SearchKey     SKey;
  401.     struct    FileRatioData     Ratios;
  402.     struct    MarkControl     MarkCtrl;
  403.     struct    AreaAccess    *Access;
  404.     ULONG             AccEntries;
  405.     struct    StoreData     StData;
  406.     struct    SimpleList     QuickList;
  407. } ;
  408.  
  409. /* struct PF_Globals *****************************************************/
  410.  
  411. struct        PF_Globals
  412. {
  413.     char             version [6];    /* Format : x.xx */
  414.     struct    FileStats     stats;
  415.     struct  Config        *config;
  416.     struct  PFUser        *user;
  417.     ULONG             NumOfUsers;
  418.     BOOL             RebuilderActive;
  419.     APTR             NewMap;
  420.     ULONG             NewMapEntries;
  421.     BOOL             LogOpen, WinLogOpen;
  422.     BPTR             LogHandle, WinLogHandle;
  423.     struct    Paths        *PipePaths;
  424.     struct    SignalSemaphore  IndexSems[27];
  425.     struct    SignalSemaphore     NumberedIndex;
  426.     struct    SignalSemaphore     HiLowIndex;
  427.     struct    List         MultiPaths;
  428. } ;
  429.  
  430. /* struct PFUser *******************************************************/
  431.  
  432. struct        PFUser
  433. {
  434.     BOOL             un_OnLine;
  435.     ULONG             un_LineNumber;
  436.     char             un_UserName[40];
  437.     struct  UserFileData     un_Ufd;
  438. } ;
  439.  
  440.  
  441. /* struct Changes ********************************************************/
  442.  
  443. struct        Changes
  444. {
  445.     BOOL             AreaList;
  446. } ;
  447.  
  448. struct        ScanningAreas
  449. {
  450.     struct        ScanInfo     si;
  451.     APTR                 ScanKey;
  452.     long                 Wrap;
  453.     long                 Indent;
  454.     BOOL                 IndentFirstLine;
  455.     long                 MaxLines;        /* if 0 then display */
  456.                               /* ALL the lines of  */
  457.                               /* the Text!            */
  458.     long                 Number;
  459.     long                 filesize;
  460.     char                *cp;
  461.     BOOL                 FileAlreadyActive;
  462. } ;
  463.  
  464. /* long __saveds AddToList ( struct Line *le, int Flags ) */
  465.  
  466. #define    MARKLIST        0x0001
  467. #define DOWNLOADLIST        0x0002
  468.  
  469. /* struct PrevFileSession ************************************************/
  470.  
  471. #define    PREVFILESESSIONFILENAME    "FileSession.Dat"
  472.  
  473. struct        PrevFileSession
  474. {
  475.     ULONG            currentarea;
  476.     ULONG            xprproto;
  477. } ;
  478.  
  479. /* struct AreaNode *******************************************************/
  480.  
  481. struct         AreaNode
  482. {
  483.     struct     Node         nn_Node;
  484.     struct     filearea     *area;
  485.     struct    SignalSemaphore  sem;     /* Obtain this Semaphore if
  486.                                              accessing the file areas
  487.                                              data files */
  488.     LONG             alpha_top; /* File Position of first
  489.                            file alphabetically */
  490.     LONG             alpha_bottom; /* File Position of last
  491.                           file alphabetically */
  492.     UWORD             num_files;
  493. } ;
  494.  
  495. /* struct MarkNode *******************************************************/
  496. /* Obsolete
  497.  
  498. struct        MarkNode
  499. {
  500.     struct    MinNode         mn_Node;
  501.     struct    MarkedFile    *mn_File;
  502. } ;
  503.  
  504. struct        MarkedFile
  505. {
  506.     char             mn_FileName [32];
  507.     ULONG             mn_Number;
  508.     ULONG             mn_Area;
  509.     ULONG             mn_MarkNum;
  510.     BOOL             mn_DosFile;
  511.     char            *mn_DosFileName;
  512. } ;
  513.  
  514. struct    DownLoadNode
  515. {
  516.     struct    Node        dln_Node;    
  517.     char            dln_FileName [256];
  518.     ULONG            dln_FileSize;
  519.     ULONG            dln_XferTime;
  520.     ULONG            dln_FileNumber;
  521. } ;
  522.  
  523. */
  524.  
  525. struct    FileScanKey
  526. {
  527.     /* PRIVATE DATA */
  528.     BPTR            descfH, datafH;
  529.     int            RecordsLoaded;
  530.     int            RecordsReturned;
  531.     int            Buffering;
  532.     char            *Records;
  533.     int            ScanFlag, Direction;
  534.     /* 095 */
  535.     short            noBackScan;
  536.     /* 0991 for Alpha Sorting */
  537.     ULONG             Offset;
  538.     ULONG             AreaNumber;
  539.     ULONG             DescSize;
  540.     UBYTE            *Desc;
  541.     ULONG             DescPosition;
  542.     ULONG             MemSize;
  543. };
  544.  
  545. /* Xpr Stuff **/
  546.  
  547. struct    XprProtoNode
  548. {
  549.     struct    Node        xpn_node;
  550.     struct  XprProto       *xpn_xprproto;
  551. } ;
  552.  
  553. #define XP_BIDIRECTIONAL 0x0001
  554. #define XP_AUTOUPLOAD    0x0002
  555. #define XP_AUTODOWNLOAD  0x0004
  556. #define XP_BATCH         0x0008
  557. #define XP_EXECUTABLE    0x0010
  558.  
  559. struct    XprProto
  560. {
  561.     char    xp_name        [40];
  562.     char    xp_trxpath    [256];
  563.     char    xp_rxpath    [256];
  564.     char    xp_libname    [50];
  565.     int    xp_loaccess;
  566.     int    xp_hiaccess;
  567.     ULONG   xp_flags;
  568. } ;
  569.  
  570. /* OLD Xpr Info Structures **************************/
  571.  
  572. struct    XPRLine
  573. {
  574.     struct    Line        *le;
  575.     char            *LibName;
  576.     char            *TxString;
  577.     char            *RxString;
  578.     char            *SendFiles;
  579.     char            *ReceiveFiles;
  580.     UWORD             XferMode;
  581.     UWORD             ProtocolSpecs;
  582. } ;
  583.  
  584. #define    XM_RX        0x0001
  585. #define    XM_TX        0x0002
  586. #define    XM_BI        0x0004    
  587.  
  588. #define    XM_AUTOUL    0x0001
  589. #define    XM_AUTODL    0x0002
  590. #define    XM_BATCH    0x0004
  591.  
  592. /**********************************************************************/
  593. /*                         File Area Accesses                         */
  594. /**********************************************************************/
  595.  
  596. #define FA_ACCESS    0x0001
  597. #define FA_VIEW        0x0002
  598. #define FA_DOWNLOAD    0x0004
  599. #define FA_UPLOAD    0x0008
  600. #define FA_EDITOWN    0x0010
  601. #define FA_EDITALL    0x0020
  602. #define FA_UNVALIDATED    0x0040
  603. #define FA_VALIDATE    0x0080
  604. #define FA_DELETE    0x0100
  605. #define FA_SYSOP    0x0200
  606. #define FA_MASKEDOUT    0x0400
  607.  
  608. struct    UserFileAccess
  609. {
  610.     ULONG    FileRatio;
  611.     ULONG    ByteRatio;
  612.     ULONG    MaxBytesPerDay;
  613.     ULONG    MaxFilesPerDay;
  614.     ULONG    FreeBytes;
  615.     ULONG    FreeDownloads;
  616. } ;
  617.  
  618. struct    FileAreaIndex
  619. {
  620.     ULONG    Section;
  621.     ULONG    AlphaTop;
  622.     ULONG    AlphaBottom;
  623.     ULONG    NumberOfFiles;
  624. } ;
  625.  
  626. struct  numidx
  627. {
  628.     LONG        HdrOffset;
  629.     LONG        IdxOffset;
  630.     char        FileName[32];
  631. } ;
  632.  
  633. struct    FileSavedData
  634. {
  635.     ULONG        Protocol;
  636.     ULONG        FileArea;
  637.     ULONG        Sig;
  638. } ;
  639.  
  640. /* EOF ******************************************************************/
  641.  
  642. #endif /* PLFILE_H */
  643.